package ace.cmp.json.api;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

/**
 * @author Caspar 默认json工具
 */
public final class JsonUtils {
  private static JsonService jsonService;

  public static void setJsonService(JsonService jsonService) {
    JsonUtils.jsonService = jsonService;
  }

  /**
   * JSON字符串转换成对象
   *
   * @param json
   * @param <T>
   * @return
   */
  public static <T> T toObject(String json, Class<T> cls) {
    return jsonService.toObject(json, cls);
  }

  /**
   * JSON字符串转换成对象
   *
   * @param json
   * @param <T>
   * @return
   */
  public static <T> T toObject(String json, Type type) {
    return jsonService.toObject(json, type);
  }

  /**
   * 对象转换成JSON字符串
   *
   * @param value
   * @return
   */
  public static String toJson(Object value) {
    return jsonService.toJson(value);
  }

  /**
   * JSON字符串转成对象
   *
   * @param json
   * @return
   */
  public static <K, V> Map<K, V> toMap(String json, Class<K> clk, Class<V> clv) {
    return jsonService.toMap(json, clk, clv);
  }

  /**
   * JSON字符串转成对象List
   *
   * @param json
   * @param cls
   * @param <T>
   * @return
   */
  public static <T> List<T> toList(String json, Class<T> cls) {
    return jsonService.toList(json, cls);
  }
}
